//package com.cropdoctor.search;
//
//import com.alibaba.fastjson.JSON;
//import com.cropdoctor.common.CustomException;
//import com.cropdoctor.mapper.VideoMapper;
//import com.cropdoctor.mapper.VegeFruTableMapper;
//import com.cropdoctor.model.doc.PublishCourseDoc;
//import com.cropdoctor.model.doc.VegeFruTableDoc;
//import com.cropdoctor.model.po.PublishCoursePo;
//import com.cropdoctor.model.po.VegeFrutablePo;
//
//import org.junit.jupiter.api.Test;
//import org.springframework.beans.factory.annotation.Autowired;
//import org.springframework.boot.test.context.SpringBootTest;
//
//import java.io.IOException;
//import java.util.ArrayList;
//import java.util.List;
//import java.util.Map;
//
//@SpringBootTest
//public class testEs {
//    @Autowired
//    private RestHighLevelClient client;
//
//    @Autowired
//    VegeFruTableMapper vegeFruTableMapper;
//
//    @Autowired
//    VideoMapper videoMapper;
//
//    @Test
//    public void testCreateIndex() throws IOException {
//        CreateIndexRequest request = new CreateIndexRequest("post");
//        request.source(VegeFruTableConstants.POST_MAPPING_TEMPLATE, XContentType.JSON);
//        client.indices().create(request, RequestOptions.DEFAULT);
//    }
//
//    @Test
//    void testBulkAdd() throws IOException {
//        List<VegeFrutablePo> list = vegeFruTableMapper.selectList(null);
//        BulkRequest request = new BulkRequest();
//
//        list.forEach(item -> {
//            VegeFruTableDoc vegeFruTableDoc = new VegeFruTableDoc(item);
//            request.add(new IndexRequest("vegefrutable")
//                    .id(vegeFruTableDoc.getId().toString())
//                    .source(JSON.toJSONString(vegeFruTableDoc), XContentType.JSON));
//        });
//        client.bulk(request, RequestOptions.DEFAULT);
//    }
//
//    @Test
//    public void testSearch() throws IOException {
//        SearchRequest request = new SearchRequest("vegefrutable");
//        request.source().query(QueryBuilders.matchQuery("all", "瓜"));
//        SearchResponse response = client.search(request, RequestOptions.DEFAULT);
//        SearchHit[] hits = response.getHits().getHits();
//        ArrayList<VegeFrutableDto> vegeFrutableDtos = new ArrayList<>();
//        for (SearchHit hit : hits) {
//            VegeFrutableDto vegeFrutableDto = new VegeFrutableDto();
//            Map<String, Object> sourceAsMap = hit.getSourceAsMap();
//            vegeFrutableDto.setDes(sourceAsMap.get("des").toString());
//            vegeFrutableDto.setId(Long.valueOf(sourceAsMap.get("id").toString()));
//            vegeFrutableDto.setMt(sourceAsMap.get("mt").toString());
//            vegeFrutableDto.setSt(sourceAsMap.get("st").toString());
//            vegeFrutableDto.setName(sourceAsMap.get("name").toString());
//            vegeFrutableDto.setUrl(sourceAsMap.get("url").toString());
//
//            vegeFrutableDtos.add(vegeFrutableDto);
//        }
//        System.out.println(vegeFrutableDtos);
//    }
//
//    @Test
//    public void testCreateUserIndex() throws IOException {
////        CreateIndexRequest request = new CreateIndexRequest("user1");
////        request.source(VegeFruTableConstants.MAPPING_TEMPLATE, XContentType.JSON);
////        client.indices().create(request, RequestOptions.DEFAULT);
//    }
//
//    @Test
//    public void testCreateCourse() {
//        String indexName = "course";
//        PublishCoursePo publishCoursePo = PublishCoursePo.builder().description("不是很好吃").title("玉米").build();
//
//        PublishCourseDoc publishCourseDoc = new PublishCourseDoc(publishCoursePo);
//        String json = JSON.toJSONString(publishCourseDoc);
//        IndexRequest createIndexRequest = new IndexRequest(indexName).id("4");
//        createIndexRequest.source(json, XContentType.JSON);
//        try {
//            client.index(createIndexRequest, RequestOptions.DEFAULT);
//        } catch (IOException e) {
//            throw new CustomException("添加数据到搜索引擎异常！");
//        }
//    }
//
//    @Test
//    public void insertFromEs2Mysql() throws IOException {
//        SearchRequest searchRequest = new SearchRequest();
//        searchRequest.indices("vegefrutable");
//        SearchSourceBuilder searchSourceBuilder = new SearchSourceBuilder();
//        MatchAllQueryBuilder matchAllQueryBuilder = QueryBuilders.matchAllQuery();
//        searchSourceBuilder.query(matchAllQueryBuilder);
//        searchSourceBuilder.size(100);
//
//        //3.将 SearchSourceBuilder 添加到 SearchRequest中
//        searchRequest.source(searchSourceBuilder);
//
//        //4.执行查询
//        SearchResponse response = client.search(searchRequest, RequestOptions.DEFAULT);
//
//        SearchHit[] hits = response.getHits().getHits();
//        for (SearchHit hit : hits) {
//            String id = hit.getId();
//            Map<String, Object> map = hit.getSourceAsMap();
//            VegeFrutablePo vegeFrutablePo = VegeFrutablePo.builder()
//                    .id(Long.valueOf(id))
//                    .alias(map.get("alias").toString())
//                    .des(map.get("des").toString())
//                    .family(map.get("family").toString())
//                    .id(Long.valueOf(map.get("id").toString()))
//                    .light(map.get("light").toString())
//                    .name(map.get("name").toString())
//                    .mt(map.get("mt").toString())
//                    .reproductivePeriod(map.get("reproductivePeriod").toString())
//                    .soilPh(map.get("soilPh").toString())
//                    .soilTypes(map.get("soilTypes").toString())
//                    .url(map.get("url").toString())
//                    .suggestion(map.get("suggestion").toString())
//                    .st(map.get("st").toString())
//                    .build();
//            vegeFruTableMapper.insert(vegeFrutablePo);
//        }
//
//
//    }
//}